//发布话题controller
var Post = require('../models/post.js')
var Type = require('../models/type.js')
var Comment = require('../models/comment.js')
var Promise = require('bluebird')
var Util = require('./util.js')
//获取没有评论的post
function getNoCommentPost(post){
	return new Promise(function(resolve,reject){
		Comment.getByPostId(post._id,function(err,comments){
			if(comments.length == 0){
				resolve(post)
			}else{
				resolve(null)
			}
		})
	})
}
//渲染post页面的方法
exports.post = function(req,res){
	Type.fetch(function(err,types){
		if(err){
			console.log(err)
		}
		res.render('post',{title:'发布话题',types:types})
	})
}
//保存post的方法
exports.savePost = function(req,res){
  //获取表单提交的post对象
	var _post = req.body.post
  //获取内容数组
	_post.content =(_post.content).split(/\r\n/g)
  //获取user的id
	_post.user = req.session.USER._id
  //将其封装成一个post的model
	var post = new Post(_post)
  //执行保存操作
	post.save(function(err,post){
		if(err){
			console.log(err)
		}
    //保存后重定向到首页
		res.redirect('/index')
	})

}
//查询post的方法
exports.findPost = function(req,res){
  //获取传过来的id参数
	var id = req.params.id
  //定义一个post数组
	var _post = []
  //通过id查询post
	Post.getById(id,function(err,post){
		if(err){
			console.log(err)
		}
     //处理时间
		 post.time = Util.transformTime(post.meta.createAt)
     //获取该作者的其他文章
		 Post.getAnotherById(id,post.user,function(err,anotherPosts){
    //获取该post的评论内容
		Comment.getByPostId(id,function(err,comments){
			 comments.forEach(function(comment){
        //处理时间
			 	comment.time = Util.transformTime(comment.meta.createAt)
			 })
      //获取评论数量
			Comment.getCountByPostId(id,function(err,count){
        //获取最近100条post数据
				Post.findAll(function(err,posts){

					for(var i=0 ; i<posts.length; i++){
					 	_post.push(getNoCommentPost(posts[i]))

					}
          //处理只得到5条没有评论内容的数据
					Promise.all(_post).then(function(_posts){

						var noCommentPost = Util.clearNullArr(_posts).splice(0,5)

						res.render('detail',{
							post:post,
							title:'详细页',
							commentCount:count,
							comments:comments,
							anotherPosts:anotherPosts,
							noCommentPost:noCommentPost
						})

					})

				})
			


		})

		})

		})

	



		
	})


}